package test.jvm;

/**
 * 创建线程导致内存溢出异常
 * VM Args ： -Xss2M
 * @author zzq
 * @datetime 2025-01-02 23:29
 */
public class StackOOMByThread {
	private void dontStop(){
		while(true){

		}
	}
	public void stackLeakByThread(){
		while (true){
			Thread thread = new Thread(new Runnable() {
				@Override
				public void run() {
					dontStop();
				}
			});
			thread.start();
		}
	}

	/**
	 * 由于在windows平台的虚拟机中，
	 * java的线程是映射到操作系统的内核线程上的，
	 * 代码执行时可能会导致操作系统假死
	 * @param args
	 * @throws Throwable
	 */
	public static void main(String[] args) throws Throwable{
		StackOOMByThread oom = new StackOOMByThread();
		oom.stackLeakByThread();
	}
}
